# !/usr/bin/python
# -*- coding: utf-8 -*-
'''
@File    :   350_两个数组交集2.py
@Time    :   2021/11/07 13:22:57
@Author  :   Qingxiang Zhang
@Version :   1.0
@Contact :   344285081@qq.com
@Desc    :   查找表
@Software:    Vscode
'''
'''
给定两个数组，编写一个函数来计算它们的交集。
示例 1：
输入：nums1 = [1,2,2,1], nums2 = [2,2]
输出：[2,2]
示例 2:
输入：nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出：[4,9]
'''



'''
元素出现的次数有用，那么对于存储次数就是有意义的，所以选择数据结构时，就应该选择dict的结构，通过字典的比较来判断；
记录每个元素的同时要记录这个元素的频次。
记录num1的字典，遍历nums2，比较nums1的字典的nums的key是否大于零，从而进行判断。
'''
# 这一题与上面不一样的，交集是都有的
class Solution:
    def intersect(self, nums1, nums2):
        from collections import Counter
        nums1_dict = Counter(nums1)
        res = []
        for num in nums2:
            if nums1_dict[num] >  0:
                res.append(num)
                nums1_dict[num] -= 1
        
        return res 
